package com.yitiao.multithread;

import java.util.concurrent.locks.LockSupport;

public class LockSupportDemo {
    public static void main(String[] args) throws Exception {
        Thread parkThread = new Thread(new Runnable() {
            @Override
            public void run() {
                // 执行业务代码
                // DO WORK

                // 执行park操作
                // 线程在JVM中的状态是WAITING,线程在内核中的状态是Sleep.
                /*
                 * 查看线程再操作系统的状态
                 *  1.jps 查看进程
                 *  2.jstack 进程号 查看16进制的线程号
                 *  3.printf ‘%\n’ pid  得到2进制的线程号
                 *  4.ps -Lf uid
                 */
                // 线程处于WAITING/Sleep状态,则失去了CPU控制权,处于等待状态,直到某种条件成立,才可以继续运行.
                LockSupport.park(this);
                System.out.println("thread park.");

            }
        }, "parkThread");

        // 启动线程
        parkThread.start();
        // 以下方法都可以唤醒线程
//        LockSupport.unpark(parkThread);
        parkThread.interrupt();
    }
}
